//////////////////////
// CURRENT FEATURES //
//////////////////////

    VIEW HEADER VIEW INPUT  ADD FRAMES  REMOVE FRAMES   EDIT FRAMES   SPLICE   SAVE 
SMV     [x]         [x]         [x]          [x]            [x]         [x]     [x]
FCM     [x]         [x]         [x]          [x]            [x]         [x]     [x]
GMV     [x]         [x]         [x]          [x]            [x]         [x]     [x] 
FMV     [x]         [x]         [x]          [x]            [x]         [x]     [x]
VBM     [x]         [x]         [x]          [x]            [x]         [x]     [x]
M64     [ ]         [ ]         [ ]          [ ]            [ ]         [ ]     [ ]

////////////////////////////
// PRIORITIES AND ROADMAP //
////////////////////////////

// these need to be fixed ASAP!!!
DEBUG::Copy buffer (arrBuffer) gets corrupted after 1 paste event (tempfix applied for now)
-- adding/removing frames seems to also effect the contents of this arraylist ... why?

// high priority
TODO::Gens XYZ-Mode read/write
TODO::Edit range (individual controller input, leaving remaining controller input intact)

// low priority
TODO::Add metadata editing support
TODO::Overhaul frame input editing
TODO::Track recent files (file->open history)

// allow a user to select a group and update input to every other frame
TODO::Autofire input insertion (alternating frames)

TODO::Add exception handlers to format loads (in case headers check out but input is corrupt)

// This prolly won't happen until I figure out how I want to display input
TODO::Line up input (fake columns of data, so if <>A, < AB, v  BS, ... etc)

TODO::Add ability to search for input pattern (ie. find <>A)

TODO::Investigate replacing listView with a gridView
TODO::Add internal Help options
TODO::Populate a default filename for SaveAs actions
TODO::Add an undo history (mapped to CTRL+Z ... remove prompt for paste)

///////////////
// CHANGELOG //
///////////////

v0-8-1

- UI::Fixed timing display for FCM files (was showing as PAL if no timing info existed)
- UI::Fixed copy-buffer save/load filter (contained a closing parentheses)
- UI::Fixed pasting from a loaded copy buffer (bad, bad, bad logic error)
- UI::Reintroduced the frame counter to the statusbar (updates on edit)
- GMV::Loaded movie now display's XYZMode values (doesn't save these yet though)
- SMV::Fixed saving (wasn't handling null input gracefully)
- M64::Header parsing implemented (not 100% ... controller selection still wonky)
- ETC::Rewrote format validation routine


v0-8

- UI::Changed application title to TAS Movie Editor (no longer TAS Movie Splicer)   
- UI::Tabbed interface removed. Replaced by a treeview.
- UI::Fixed a bug where the app would crash if trying to access a locked file
- UI::Removed frame count and file name from status bar (frame count no longer used in buffer length calculations)
- UI::Buffer saving to file implemented
- UI::Buffer loading from file implemented
- VBM::Header parsing implemented
- VBM::Controller data parsing implemented
- VBM::Splicing implemented
- VBM::Saving implemented
- FMV::Saving implemented
- FMV::Splicing implemented
- FMV::Fixed a bug where the bytesPerFrame kept increasing when an FMV was closed (crashed after about 3 loads)


v0-7-1

- UI::Trying to clear an empty buffer was causing an unhandled exception (fixed)
- UI::Buffer ListView now virtual as well (fixes lag issue when copying large blocks)
- UI::Fixed the tab locking when a movie's loaded (the old method was annoying since
    the ui would flash if you clicked a tab)
- UI::Fixed a bug in the splicer that wasn't allowing source movies to be loaded
    

v0-7

- UI::OpenFileDialog now displays a default filter of All Movie Files (as opposed to *.*)
- UI::Frame Data listview now virtual, so all paging functions have been depreciated
- UI::Frame Data alternating rows now coloured (ummmmmmmm, BlanchedAlmond)
- UI::Insertion of Multiple Frames added
- UI::Removal of Multiple Frames added
- UI::Group editing (multiple frames) added
- UI::Copy Input selection to buffer (CTRL+C)
- UI::Pasting copied input from the buffer into the current movie added (CTRL+V)
- UI::View Buffer (CTRL+B)
- UI::Added VisualBoyAdvance layout
- FMV::Header data parsing added
- FMV::Input parsing added
- FCM::Fixed Save bug (wasn't writing the last command properly)


v0-6

- UI::Closing a movie didn't clear all Snes9x data (fixed)
- UI::Cleaned and optimized a lot of routines
- UI::Splicing routine re-written
- FCM::Save/SaveAs now work (99% functional -- last byte of input being dropped)
- FCM::Splicing enabled
- FCM::Add/Remove/Edit frame data enabled
- SMV::Edit functions now work from the context menu
    (no more seperate menu options to add/remove)
- SMV::Save/SaveAs now work with this format   
- GMV::Splicing enabled 


v0-5-1

- UI::Jump to Frame fixed
- UI::Removed Compare input (it sucks way too badly right now)
- UI::Re-wrote the add/remove logic (I have no idea why I thought that would work =P)
- UI::Closing a movie didn't clear the Gens data (fixed)
- GMV::Remove Frames implemented


v0-5

- UI::Standardized and unified all the format pagination routines (should be faster)
- UI::Movies can now be closed (reclaim memory and allow tabs to be clicked again)
- UI::Loaded movie name now displayed in status bar
- UI::FrameCount now displayed in status bar as well (this will be used for frame editing)
- UI::Added Frame Editing layout
- UI::Add/Remove frames now a right-click context menu of the Controller Input list
    (not all formats have the related update code though)
- GMV::Initial support added (reads header information)
- GMV::Frame input populates (all controllers work, but XYZ-Mode still not supported)
- GMV::Edits made to frame data can be saved out to file
- FCM::Frame input for multiple controllers 
- SMV::Fixed UID (now displayed as DateTime as opposed to UTC integer)
- SMV::Frame input for multiple controllers now works


v0-4

- FCM::Frame Input now populated
- FCM::Pagination implemented
- SMV::Fixed bug in Add Frames routine (should work properly now)


v0-3

- UI::Added shortcut keys to menu items
- UI::Initial layout for FMV & FCM support
- UI::Added Resume position to Copy methods
- UI::Added Add/Remove Frames (Remove works ... Add is still wonky)
- UI::Added Movie Input Compare module (preliminary)
- FCM::Preliminary support introduced (reads header data :P)
- SMV::Movie Input Compare enabled
- SMV::Cleaned up properties
- SMV::Encapsulated write methods (moved out from copy class)
- SMV::Three splicing methods are now available:
    - FromSourceStart::Source.Beginning -> Source.TargetFrame + Target.ResumeFrame -> Target.ToEnd
    - FromRange::Target.Beginning -> Target.InsertPosition + Source.TargetFrame + Source.ResumeFrame + Target.ResumeFrame
    - FromSourceEnd::Target.Beginning -> Target.TargetFrame + Source.TargetFrame + Source.ToEnd


v0-2

- UI::various event handlers put in place to keep the program from crashing
- UI::implemented jumping to a frame (doesn't calculate accurately 100% of the time though)
- UI::implemented refreshing (if you want to skip to a specific page, or change the results per page)
- UI::checks if the loaded file is a valid SMV (currently checks against version since signature read is wonky)
- UI::movie options now set from file
- SMV::added metadata read
- SMV::fixed input anomalies
- SMV::spliced file frame counts are now updated when written


v0-1

- initial release

